﻿namespace che20
{
    internal class Text17
    {
        static void Main(string[] args)
        {
            Console.WriteLine("for循环");
//1.基本语法
            //for(/*初始表达式*/;/*条件表达式*/;/*增量表达式*/ )
            //{
            //   循环代码逻辑;
            //}
            //第一个空（初始表达式）：一般声明一个临时变量，用来计数用
            //第二个空（条件表达式）：表明进入循环的条件 一个bool类型的结果
            //第三个空（增量表达式）：用第一个空中的变量 进行 自增减运算
            for(int a=1;a<10;a++)
            {
                Console.WriteLine(a);
                //执行完循环语句块中的逻辑后
                //最后执行第三个空中的代码
            }
            //每个空位 可以按照规则进行书写
            //第一个空位 就是申明变量 所以可以连续申明
            //第二个空位 就是进入条件 只要是bool结果的表达式 都可以
            //第三个空位 就是执行 一次循环逻辑过后要做的事情 做啥都行

//2.支持嵌套   
            for(int a=0;a<10;a++)
            {
                for(int b=0;b<10;b++)
                {
                    Console.WriteLine(a+"-"+b);
                }
            }
            //这些循环相互间都能嵌套

//3.特殊写法
         //for循环可以写死循环（不是很重要，过！）   

//4.对比while循环
            //for循环一般用来可以准确得到 一个范围中的所有数

            //for(int a=0;a<2;a++)
            //{
            //    Console.WriteLine("for循环一行代码搞定");
            //}
            //int j = 0;
            //while(j<2)
            //{
            //   Console.WriteLine("while循环需要多写几行");
            //}

//作业
            //1.输出1到100之间的整数（包含本身）
            for(int a=1;a<=100;++a)
            {
                Console.WriteLine(a);
            }

            //2.求1~100之间所有偶数的和
            int result = 0;
            for(int a=0;a<=100;a++)
            {
                if(a%2==0)
                {
                    result += a;
                }
            }
            Console.WriteLine(result);

            //3.找出100~999之间的水仙花数
            //例如：153 = 1*1*1 + 5*5*5 + 3*3*3 这个数就是水仙花数
            for(int a=100;a<999; a++)
            {
                int hun = a / 100;//看它百位是几
                int ten = a % 100 / 10;//看它十位是几
                int one = a % 100 % 10;//看它个位数是几
                if(hun == ten &&ten == one)
                {
                    Console.WriteLine("{0}是水仙花数",a);
                }
            }

            //4,在控制台上输出九九乘法表
            
            for(int a=1;a<=9;a++)
            {
                for(int m=1;m<=a;m++)
                {
                    Console.Write("{0}x{1}={2} ",m,a,a*m);//会打印到同一行上
                }
                Console.WriteLine();//空的就会自动空行
            }

            //5.在控制台上输出如下10*10的空心星型方阵
            for(int a=1;a<=10;a++)
            {
                if(a==1||a==10)
                {
                    Console.WriteLine("**********");
                }
                else
                {
                    Console.WriteLine("*        *");
                }
            }

            //6.在控制台上输出如下10*10的三角形方阵
            for(int a=1;a<=10;a++)
            {
                for(int b=1;b<=a;b++)//b<=a,a是多少b就打印几个*
                {
                    
                    Console.Write("*"); 
                }
                Console.WriteLine();
            }

            //7.在控制台上输出如下10行的三角形方阵
            for (int a = 1; a <= 10; a++)
            {
                for(int s=1;s<=10-a;s++)//因为从最后一行倒数每行有一个空格，所以空格数是10-a
                {
                    Console.Write(" ");
                }
                for (int b = 1; b <= 2*a - 1;b++)//上面因为每行打印与他行数相符的*号，所以这个每行打印奇数个所以是2n-1
                {
                    Console.Write("*");
                }
                Console.WriteLine();
            }
        }
    }
}
